iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 1
0
Mobile Development

傻瓜也要能看懂的Flutter學習心得系列 第 1

[Day 1]第一天要寫什麼啊?

  • 分享至 

  • xImage
  •  
鐵人賽用的發文介面模式挺不錯的,還有「增加程式碼」的項目。

我想要讓自己的文章是傻瓜(沒有資訊背景跟基礎訓練的人)也能看懂,所以...???...我在騙誰啊!走進書店,一堆「傻瓜也能看懂」的書陳列在架上,但請問有多少書最後成了新手地雷?

那些書的作者難道當初寫作的出發點是想要「寫本書放在書店架上當地雷」嗎?

那,到底怎樣才能真的讓「傻瓜(沒有資訊背景跟基礎訓練的人)」也能看懂?
這好像不是技術問題或什麼社會性議題,而是種形而上的哲學問題。

書或文章其實是種單向的溝通,寫作者在每個段落都要去預測跟預期(當下還不存在的)閱讀者可能會產生的反應。
例如「這裡可能會看不懂,所以要加註解」,或「讀到這裡會延伸出什麼想法,可以順著擴充章節」,(像堅持用表面形式或程序來辨別事情的人讀到這裡可能就會說「這就不是溝通啊!」......今天是2020年九月十六號,諾蘭的「天能TENET」應該還沒下檔,去看看。「我們要跟未來的人溝通很容易,我們留下的任何東西都是給未來的訊息,真正的問題是未來的人有沒有辦法回覆我們。」)

但把這整件事情用有一點虛無、兩點悲觀的方法來講。

一點虛無、兩點悲觀

基本上任何書或文章寫出來,都是要丟臉的,因為人做出的預期預測總是註定會落空,想半天講半天,其實你始終是在跟自己對話,(或至少多數的時間都是在跟自己對話。)
也就是說:你要能認清或識破那個你正在與之溝通的假想讀者只是你自己的投射。
如果不能認清或識破,寫了篇文章或本書,最後就很容易變成大量複製的筆記本跟自戀式的學習回憶心得而已。

這個問題結束了嗎?底怎樣才能真的讓「傻瓜(沒有資訊背景跟基礎訓練的人)」也能看懂?回答完了嗎?

當然還沒。
延伸一下:為什麼會有人在沒有基礎背景的情況下想要跑來學寫程式?
是生活不夠繁重、想要點刺激?或沒頭沒腦沒願景的一直在工作、有天忽然驚醒發覺自己原來是條鹹魚嗎?......啊!不小心自我投射了!

大多數人想「學」寫程式的目的只有一件事:想寫程式。
「這不是廢話!」但這廢話裡頭有某種魔鬼細節。

寫程式需要的能力應該是以計算機概論、邏輯思維能力、資料結構、模組化......等領域的知識為基礎。
就好像學數學,我們都知道「加法」的原理,所以知道了「1+1」,我們自然也能應付「10134+20003864」或是「32.34760+66/7」。
如果數學老師在台上教數學時,從不教「加法」的原理,而是開始「今天要來介紹1+1、1+2....明天要教100+101....」,那台下一百個學生可能最後真正學會數學的不到一個。

問題是程式設計畢竟不是基礎學科,它本來就是實用知識,就好像上面的那句廢話:大家是來學寫程式的,而且是學高階語言。
大家不用懂為什麼「晶元可以用來儲存跟計算」、「軟體到底如何跟硬體溝通」、「螢幕為何可以呈現畫面」、「喇叭為何可以接收數位資料來輸出聲音」...

因為那真的學不完!

說到最後,如何讓大家看見螢幕上出現「Hello World」才是王道。

Hello World

如何讓「Hello World」出現在螢幕上,幾乎是每種程式語言教材的入門程式。
想學C語言?用C語言讓程式在螢幕上顯示Hello World。
想學Java?用Java語言讓程式在螢幕上顯示出Hello World。
想學Python?
想學C#?
想學Groovy?...

大家都是從Hello World開始。

雖然之前還有「這項程式語言的發展歷史」和「如何安裝寫程式需要用的各種軟體」...

但入門課程結束後,就是不停的「教你如何在螢幕上顯示一個輸入框」「教你如何在螢幕上顯示一個Spinner和Switch開關」「教你如何顯示一張圖片」「教你如何用List製作一個清單」......

但這樣做有三個明顯的問題。

首先,一件事情做一次很簡單,但做十次、二十次、甚至合併其他事情一起做十次、二十次...那意義並不一樣。學會設置一個文字或輸入框或任何元件,那難度跟設計一個實際商用UI的難度完全不一樣,更何況要合併數十數百個邏輯判斷運算。急著單刀直入教實用的「只做一次」的教學介紹,結果是大家好像學了一堆技巧,但卻從沒學到如何組合、和重複大量組合這些技巧的「技巧」。

大家好像學了一堆技巧,但卻從沒學到如何組合、和重複大量組合這些技巧的「技巧」。

其次,UI並不是程式的核心,而程式的核心往往都是計算機概論、邏輯思維能力、資料結構、模組化...等知識,偏偏教程都在不知不覺間預設學習者有這方面的知識。

最後,又是一點虛無、兩點悲觀,這些教程作者經常小看了學習者心目中預想的UI難度,提供的教學跟範例都太粗淺。--最後一堆人花了一堆時間在某人自以為嘔心瀝血的精心大作上,但最後卻只是白忙一場。

重點不在如何成功,重點應該在如何不要失敗。

越去試圖預測學習者的樣貌、或他們的目標跟需求,最後往往離讓他們真的看懂、真的從中掌握到東西越遠。

這並不表示應該要別去理會學習者可能的樣貌、或他們可能的目標跟需求。

「單刀直入」只能的介紹程式碼應用編寫方式並不能讓人學到程式設計的思維能力。

但,到底可以講什麼呢?

........明天就知道了。

(搞不好鐵人賽主辦單位還會認為這篇文章是在灌水也不一定。)


下一篇
[Day 2] 先理解什麼是程式設計、編譯器、SDK
系列文
傻瓜也要能看懂的Flutter學習心得10
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言